package com.apobates.jforum.grief.aurl.executor;

import com.apobates.jforum.grief.aurl.core.AUrlMeta;
import com.apobates.jforum.grief.aurl.core.AUrlMetaBuilder;
import java.util.Set;

/**
 * AUrlRawMeta的执行器
 * @param <T> 执行历史记录的类型
 */
public abstract class AUrlMetaExecutor<T> {
    private final AUrlMeta rawMeta;
    protected static final char PATH_DELIMITER = '/';
    protected static final String PATH_DELIMITER_STR=String.valueOf(PATH_DELIMITER);
    public AUrlMetaExecutor(AUrlMeta rawMeta) {
        this.rawMeta = rawMeta;
    }

    protected AUrlMeta getRawMeta() {
        return rawMeta;
    }

    /**
     * 返回执行器的历史轨迹
     * @return
     */
    public abstract Set<T> getActionRecords();

    /**
     * 执行器处理的结果
     * @return
     */
    public abstract AUrlMetaBuilder getBuilder();
}
